#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
SVG思维导图转换为Word文档
"""

import os
import sys
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import RGBColor
from docx.enum.text import WD_COLOR_INDEX

def create_camera_encyclopedia_doc(output_file):
    """
    创建相机百科全书项目的Word文档
    """
    # 创建文档
    doc = Document()
    
    # 添加标题
    title = doc.add_heading('相机百科全书项目架构设计', 0)
    title.alignment = WD_ALIGN_PARAGRAPH.CENTER
    
    # 添加副标题
    subtitle = doc.add_heading('Django 5.2.5 项目', level=1)
    subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER
    
    # 添加技术栈信息
    tech_stack = doc.add_paragraph()
    tech_stack.add_run('技术栈: Python + Django + SQLite + HTML5 + CSS3').bold = True
    tech_stack.alignment = WD_ALIGN_PARAGRAPH.CENTER
    
    doc.add_page_break()
    
    # 1. 数据模型部分
    doc.add_heading('1. 数据模型层', level=1)
    
    # 相机分类
    doc.add_heading('1.1 相机分类', level=2)
    doc.add_paragraph('相机分类是对不同类型相机的归类管理。')
    
    # 相机词条
    doc.add_heading('1.2 相机词条', level=2)
    doc.add_paragraph('相机词条包含相机的详细信息，如型号、参数、特性等。')
    
    # 配件分类
    doc.add_heading('1.3 配件分类', level=2)
    doc.add_paragraph('配件分类是对不同类型相机配件的归类管理。')
    
    # 相机配件
    doc.add_heading('1.4 相机配件', level=2)
    doc.add_paragraph('相机配件包含各类相机附件的详细信息。')
    
    # 数据关系表格
    doc.add_heading('1.5 数据关系', level=2)
    table = doc.add_table(rows=1, cols=2)
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = '实体关系'
    hdr_cells[1].text = '关系类型'
    
    # 添加数据关系
    data_relations = [
        ('相机分类 - 相机词条', '一对多'),
        ('配件分类 - 相机配件', '一对多'),
        ('相机词条 - 相机配件', '多对多 (兼容性)')
    ]
    
    for relation, rel_type in data_relations:
        row_cells = table.add_row().cells
        row_cells[0].text = relation
        row_cells[1].text = rel_type
    
    # 2. 视图功能部分
    doc.add_heading('2. 视图功能层', level=1)
    
    # 相机视图
    doc.add_heading('2.1 相机视图', level=2)
    camera_views = [
        '相机列表 - 展示所有相机条目',
        '相机详情 - 展示单个相机的详细信息',
        '创建相机 - 添加新的相机条目',
        '编辑相机 - 修改已有相机的信息',
        '删除相机 - 移除相机条目'
    ]
    
    for view in camera_views:
        p = doc.add_paragraph()
        p.add_run(view).bold = True
    
    # 配件视图
    doc.add_heading('2.2 配件视图', level=2)
    accessory_views = [
        '配件列表 - 展示所有配件条目',
        '配件详情 - 展示单个配件的详细信息',
        '创建配件 - 添加新的配件条目',
        '编辑配件 - 修改已有配件的信息',
        '删除配件 - 移除配件条目'
    ]
    
    for view in accessory_views:
        p = doc.add_paragraph()
        p.add_run(view).bold = True
    
    # 分类视图
    doc.add_heading('2.3 分类视图', level=2)
    doc.add_paragraph('分类视图 - 展示各类别的详细信息和包含的条目。')
    
    # 其他功能
    doc.add_heading('2.4 其他功能', level=2)
    other_functions = [
        '关于页面 - 项目介绍和相关信息',
        '搜索过滤 - 提供搜索和筛选功能，方便用户查找信息'
    ]
    
    for func in other_functions:
        p = doc.add_paragraph()
        p.add_run(func).bold = True
    
    # 3. URL配置部分
    doc.add_heading('3. URL配置', level=1)
    
    url_configs = [
        '相机URL - 处理相机相关的路由请求',
        '配件URL - 处理配件相关的路由请求',
        '分类URL - 处理分类相关的路由请求'
    ]
    
    for url in url_configs:
        p = doc.add_paragraph()
        p.add_run(url).bold = True
    
    # 4. 表单验证部分
    doc.add_heading('4. 表单验证', level=1)
    
    form_validations = [
        '相机表单 - 相机信息的输入验证和提交处理',
        '配件表单 - 配件信息的输入验证和提交处理'
    ]
    
    for form in form_validations:
        p = doc.add_paragraph()
        p.add_run(form).bold = True
    
    # 5. 数据初始化部分
    doc.add_heading('5. 数据初始化', level=1)
    
    data_initializations = [
        '基础数据 - 项目所需的基本初始数据',
        '增强数据 - 包含更多详细信息的增强数据'
    ]
    
    for data in data_initializations:
        p = doc.add_paragraph()
        p.add_run(data).bold = True
    
    # 数据统计信息
    doc.add_heading('5.1 数据统计', level=2)
    stats = doc.add_paragraph()
    stats.add_run('增强版数据统计').bold = True
    doc.add_paragraph('相机分类: 5个 | 相机条目: 13台')
    doc.add_paragraph('配件分类: 8个 | 配件条目: 16个')
    
    # 6. 项目功能概览
    doc.add_heading('6. 项目功能概览', level=1)
    
    project_features = [
        '相机信息展示与管理',
        '相机配件展示与管理',
        '分类浏览与过滤功能',
        '搜索与数据统计',
        '配件与相机兼容性管理'
    ]
    
    for i, feature in enumerate(project_features, 1):
        p = doc.add_paragraph()
        p.add_run(f'{i}. {feature}').bold = True
    
    # 保存文档
    doc.save(output_file)
    print(f"Word文档已生成: {output_file}")

if __name__ == "__main__":
    print("开始执行SVG到Word转换脚本...")
    
    # 检查是否已安装python-docx
    try:
        import docx
        print("python-docx库已成功导入")
    except ImportError:
        print("请先安装python-docx库: pip install python-docx")
        sys.exit(1)
    
    # 生成Word文档
    output_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), '相机百科全书项目架构设计.docx')
    print(f"将生成文档: {output_file}")
    
    try:
        create_camera_encyclopedia_doc(output_file)
        print("文档生成完成!")
        # 验证文件是否存在
        if os.path.exists(output_file):
            print(f"文件已成功创建，大小: {os.path.getsize(output_file)} 字节")
        else:
            print("错误: 文件未创建成功")
    except Exception as e:
        print(f"生成文档时出错: {str(e)}")
        import traceback
        traceback.print_exc()